<?php
/**
 * Map24MatrixRouting class file
 * 
 * @author    {author}
 * @copyright {copyright}
 * @package   {package}
 */

/**
 * RequestHeader.CustomerKeyValuePair class
 */
if ( !class_exists('RequestHeaderCustomerKeyValuePair') )
{
require_once 'RequestHeader.CustomerKeyValuePair.php5';
}
/**
 * ResponseHeader class
 */
if ( !class_exists('ResponseHeader') )
{
require_once 'ResponseHeader.php5';
}
/**
 * Coordinate class
 */
if ( !class_exists('Coordinate') )
{
require_once 'Coordinate.php5';
}
/**
 * MRoutePoint class
 */
if ( !class_exists('MRoutePoint') )
{
require_once 'MRoutePoint.php5';
}
/**
 * MRouteStreetClass class
 */
if ( !class_exists('MRouteStreetClass') )
{
require_once 'MRouteStreetClass.php5';
}
/**
 * Property class
 */
if ( !class_exists('Property') )
{
require_once 'Property.php5';
}
/**
 * MRouteStreetClassDependantDistance class
 */
if ( !class_exists('MRouteStreetClassDependantDistance') )
{
require_once 'MRouteStreetClassDependantDistance.php5';
}
/**
 * CoordinatesArray class
 */
if ( !class_exists('CoordinatesArray') )
{
require_once 'CoordinatesArray.php5';
}
/**
 * MRoute class
 */
if ( !class_exists('MRoute') )
{
require_once 'MRoute.php5';
}
/**
 * CalculateMRoutesVectorResponse class
 */
if ( !class_exists('CalculateMRoutesVectorResponse') )
{
require_once 'CalculateMRoutesVectorResponse.php5';
}
/**
 * RequestHeader class
 */
if ( !class_exists('RequestHeader') )
{
require_once 'RequestHeader.php5';
}
/**
 * CalculateMRoutesVectorRequest class
 */
if ( !class_exists('CalculateMRoutesVectorRequest') )
{
require_once 'CalculateMRoutesVectorRequest.php5';
}
/**
 * AsyncResponse class
 */
if ( !class_exists('AsyncResponse') )
{
require_once 'AsyncResponse.php5';
}
/**
 * JobStatus class
 */
if ( !class_exists('JobStatus') )
{
require_once 'JobStatus.php5';
}
/**
 * MRoutesVector class
 */
if ( !class_exists('MRoutesVector') )
{
require_once 'MRoutesVector.php5';
}
/**
 * MRouteStreetClassDependantSpeed class
 */
if ( !class_exists('MRouteStreetClassDependantSpeed') )
{
require_once 'MRouteStreetClassDependantSpeed.php5';
}
/**
 * CalculateMRoutesMatrixResponse class
 */
if ( !class_exists('CalculateMRoutesMatrixResponse') )
{
require_once 'CalculateMRoutesMatrixResponse.php5';
}
/**
 * CalculateMRoutesMatrixRequest class
 */
if ( !class_exists('CalculateMRoutesMatrixRequest') )
{
require_once 'CalculateMRoutesMatrixRequest.php5';
}
/**
 * RouteViaPoint class
 */
if ( !class_exists('RouteViaPoint') )
{
require_once 'RouteViaPoint.php5';
}
/**
 * RouteSegmentDirectionHint class
 */
if ( !class_exists('RouteSegmentDirectionHint') )
{
require_once 'RouteSegmentDirectionHint.php5';
}
/**
 * RouteSegmentStreetClass class
 */
if ( !class_exists('RouteSegmentStreetClass') )
{
require_once 'RouteSegmentStreetClass.php5';
}
/**
 * RouteSegmentDescription class
 */
if ( !class_exists('RouteSegmentDescription') )
{
require_once 'RouteSegmentDescription.php5';
}
/**
 * RouteSegmentTMCHint class
 */
if ( !class_exists('RouteSegmentTMCHint') )
{
require_once 'RouteSegmentTMCHint.php5';
}
/**
 * MapCoordinatesArray class
 */
if ( !class_exists('MapCoordinatesArray') )
{
require_once 'MapCoordinatesArray.php5';
}
/**
 * RouteSegment class
 */
if ( !class_exists('RouteSegment') )
{
require_once 'RouteSegment.php5';
}
/**
 * Route class
 */
if ( !class_exists('Route') )
{
require_once 'Route.php5';
}
/**
 * CalculateMRouteResponse class
 */
if ( !class_exists('CalculateMRouteResponse') )
{
require_once 'CalculateMRouteResponse.php5';
}
/**
 * RoutingRequestVehicleType class
 */
if ( !class_exists('RoutingRequestVehicleType') )
{
require_once 'RoutingRequestVehicleType.php5';
}
/**
 * RoutingRequestSpeedClassification class
 */
if ( !class_exists('RoutingRequestSpeedClassification') )
{
require_once 'RoutingRequestSpeedClassification.php5';
}
/**
 * CalculateMRouteRequest class
 */
if ( !class_exists('CalculateMRouteRequest') )
{
require_once 'CalculateMRouteRequest.php5';
}

/**
 * Map24MatrixRouting class
 * 
 *  
 * 
 * @author    {author}
 * @copyright {copyright}
 * @package   {package}
 */
class Map24MatrixRouting {

  private $client;

  private $wsdl = null;

  /**
   *
   * @param MapTP-System the request should be executed on $server
   * @param Map24Id $mid
   * @param Map24SessionId $sid
   */ 
  public function __construct($server=null, $mid=null, $sid=null, $interface='map24/webservices1.5') {
    if($server==null || $mid==null || $sid==null){
      echo "ERROR: Not enough or invalid arguments! Unable to initialise SoapClient.";
    }
    else {
      $this->wsdl = "http://".$server."/".$interface."?wsdl=Map24MatrixRouting";
      $this->client = new SoapClient($this->wsdl, array('location' => "http://".$server."/".$interface."?soap=Map24MatrixRouting&mid=".$mid."&sid=".$sid, 'trace' => 0, 'exceptions' => 1));
    }
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param CalculateMRoutesVectorRequest $CalculateMRoutesVectorRequest
   * @return CalculateMRoutesVectorResponse
   */
  public function calculateMRoutesVector(RequestHeader $RequestHeader, CalculateMRoutesVectorRequest $CalculateMRoutesVectorRequest) {
    return $this->client->calculateMRoutesVector($RequestHeader, $CalculateMRoutesVectorRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param CalculateMRoutesVectorRequest $CalculateMRoutesVectorRequest
   * @return AsyncResponse
   */
  public function _async_calculateMRoutesVector(RequestHeader $RequestHeader, CalculateMRoutesVectorRequest $CalculateMRoutesVectorRequest) {
    return $this->client->_async_calculateMRoutesVector($RequestHeader, $CalculateMRoutesVectorRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return JobStatus
   */
  public function _async_job_status(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_status($AsyncResponse);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return JobStatus
   */
  public function _async_job_abort(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_abort($AsyncResponse);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return CalculateMRoutesVectorResponse
   */
  public function _async_job_retrieve_calculateMRoutesVector(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_calculateMRoutesVector($AsyncResponse);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param CalculateMRoutesMatrixRequest $CalculateMRoutesMatrixRequest
   * @return CalculateMRoutesMatrixResponse
   */
  public function calculateMRoutesMatrix(RequestHeader $RequestHeader, CalculateMRoutesMatrixRequest $CalculateMRoutesMatrixRequest) {
    return $this->client->calculateMRoutesMatrix($RequestHeader, $CalculateMRoutesMatrixRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param CalculateMRoutesMatrixRequest $CalculateMRoutesMatrixRequest
   * @return AsyncResponse
   */
  public function _async_calculateMRoutesMatrix(RequestHeader $RequestHeader, CalculateMRoutesMatrixRequest $CalculateMRoutesMatrixRequest) {
    return $this->client->_async_calculateMRoutesMatrix($RequestHeader, $CalculateMRoutesMatrixRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return CalculateMRoutesMatrixResponse
   */
  public function _async_job_retrieve_calculateMRoutesMatrix(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_calculateMRoutesMatrix($AsyncResponse);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param CalculateMRouteRequest $CalculateMRouteRequest
   * @return CalculateMRouteResponse
   */
  public function calculateMRoute(RequestHeader $RequestHeader, CalculateMRouteRequest $CalculateMRouteRequest) {
    return $this->client->calculateMRoute($RequestHeader, $CalculateMRouteRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param CalculateMRouteRequest $CalculateMRouteRequest
   * @return AsyncResponse
   */
  public function _async_calculateMRoute(RequestHeader $RequestHeader, CalculateMRouteRequest $CalculateMRouteRequest) {
    return $this->client->_async_calculateMRoute($RequestHeader, $CalculateMRouteRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return CalculateMRouteResponse
   */
  public function _async_job_retrieve_calculateMRoute(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_calculateMRoute($AsyncResponse);
  }

}

?>
